﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcMercadoLibre.Models
{
    public class Articulo
    {
        public int Id { get; set; }

        public string Nombre { get; set; }

        public double Precio { get; set; }

        public int Cantidad { get; set; }

        public string Comprador { get; set; }

        public string UrlImagen { get; set; }

        //MercadoLibreService.MercadoLibreServiceClient wsClient = new MercadoLibreService.MercadoLibreServiceClient();

        ArticulosWS.BuscarArticuloImplService wsClient = new ArticulosWS.BuscarArticuloImplService();

        public List<Articulo> Listar()
        {
            var wsArticulos = wsClient.ListarArticulos();

            var articulos = from art in wsArticulos.ToList()
                            select new Articulo
                                {
                                    Id = art.id,
                                    Nombre = art.nombre,
                                    Precio = art.precio,
                                    Cantidad = art.stock,
                                    UrlImagen = art.imagen
                                };


            return articulos.ToList();

        }

        public List<Articulo> Buscar(string texto)
        {
            var wsArticulos = wsClient.BuscarArticulos(texto);

            var articulos = from art in wsArticulos.ToList()
                            select new Articulo
                            {
                                Id = art.id,
                                Nombre = art.nombre,
                                Precio = art.precio,
                                Cantidad = art.stock,
                                UrlImagen = art.imagen
                            };


            return articulos.ToList();

        }


        public Articulo ObtenerDetalle(int id)
        {
            Articulo articulo = null;
            var wsArticulo = wsClient.ObtenerArticulo(id);

            if (wsArticulo != null)
            {
                articulo = new Articulo { Id = wsArticulo.id, Nombre = wsArticulo.nombre, Precio = wsArticulo.precio, Cantidad = wsArticulo.stock, UrlImagen = wsArticulo.imagen };

            }

            return articulo;

        }


        internal List<Articulo> BuscarPendientes(string id)
        {
            //ArticulosWs.articulo[] listaWs = new ArticulosWs.BuscarArticuloImplService().ListarArticulos();
            List<Articulo> listaRetorno = new List<Articulo>();
            //foreach (ArticulosWs.articulo item in listaWs)
            //{
            //    Articulo art = new Articulo();
            //    art.Id = item.id;
            //    art.Nombre = item.nombre;
            //    art.Cantidad = item.stock;
            //    art.Comprador = item.vendedor;
            //    listaRetorno.Add(art);
            //}

            return listaRetorno;
        }

        public string Descripcion { get; set; }

        public List<Articulo> obtenerMisArticulos(int idVendedor)
        {
            List<Articulo> lista;
            var listado = new ArticulosWS.BuscarArticuloImplService().ObtenerMisArticulos(idVendedor);
            lista = new List<Articulo>();
            if (listado != null)
            {
                foreach (ArticulosWS.articulo item in listado)
                {
                    lista.Add(convierte(item));
                }
            }
            return lista;
        }

        public string Vendedor { get; set; }

        public Articulo obtieneArticulo(int id)
        {
            return convierte(new ArticulosWS.BuscarArticuloImplService().ObtenerArticulo(id));
        }

        public Articulo convierte(ArticulosWS.articulo item)
        {
            Articulo art = new Articulo();
            art.Id = item.id;
            art.Nombre = item.nombre;
            art.Descripcion = item.descripcion;
            art.Cantidad = item.stock;
            art.Precio = item.precio;
            art.UrlImagen = item.imagen;
            art.Vendedor = item.vendedor;
            return art;
        }
        public ArticulosWS.articulo convierte(Articulo art)
        {
            ArticulosWS.articulo item = new ArticulosWS.articulo();
            item.id = art.Id;
            item.nombre = art.Nombre;
            item.descripcion = art.Descripcion;
            item.stock = art.Cantidad;
            item.precio = art.Precio;
            item.imagen = art.UrlImagen;
            item.vendedor = art.Vendedor;
            item.comprador = art.Comprador;
            return item;
        }

        internal void guardar()
        {
            new ArticulosWS.BuscarArticuloImplService().GuardarArticulo(convierte(this));
        }

        internal void actualizar()
        {
            new ArticulosWS.BuscarArticuloImplService().ActualizarArticulo(convierte(this));
        }

        internal void Eliminar()
        {
            new ArticulosWS.BuscarArticuloImplService().EliminarArticulo(convierte(this));
        }

        internal string Comprar()
        {
            return new ArticulosWS.BuscarArticuloImplService().ComprarArticulo(convierte(this));
        }
    }
}